package net.cyndeline.rldungeon.dgs.strategy.pointlessArea.help

import net.cyndeline.rldungeon.dgs.graph.{DGSFunctionality, Room}
import scalax.collection.GraphEdge.UnDiEdge
import scalax.collection.GraphPredef.OuterEdge
import scalax.collection.immutable.Graph
import net.cyndeline.rldungeon.dgs.strategy.help.{CollapsedEdge, CollapsedNode}

/**
 * Stores the resulting graphs when setting pointless status and data, as well as mappings between the old
 * and new vertices/nodes.
 */
case class PointlessSetterResult[VType <: Room[VType], EType[X] <: UnDiEdge[X] with DGSFunctionality[X, EType] with OuterEdge[X, EType]]
  (graph: Graph[VType, EType],
   collapsedGraph: Graph[CollapsedNode[VType], CollapsedEdge[VType]#Inner],
   oldToNewVertexMap: Map[VType, VType],
   oldToNewNodeMap: Map[CollapsedNode[VType], CollapsedNode[VType]])
